/*
数据结构 解题报告：
http://git.oschina.net/et0662/sznoi-Data_Structure
*/
#include<stdio.h>
typedef struct _NODE
{
	int data;
	struct _NODE* next;
}Node, *Link;

typedef struct _QUEUE
{
	Node* head;
	Node* tail;
	int size;
	int num;
}Queue;

Queue* initQueue()
{
	int n;
	Node* temp;
	Queue* q;
	scanf("%d",&n);
	temp=new Node;
	temp->next=NULL;
	q=new Queue;
	q->size=n;
	q->num=0;
	q->head=temp;
	q->tail=temp;
	return q;
}

void insertQueue(Queue* q)
{
	Node* temp;
	int n;
	scanf("%d",&n);
	if(q->num==q->size)
	{
		printf("Full OV\n");
	}
	else
	{
		q->num++;
		temp=new Node;
		temp->data=n;
		temp->next=NULL;
		if(q->tail)
		{
			q->tail->next=temp;
			q->tail=temp;
		}
		else
		{
			q->tail=temp;
			q->head->next=temp;
		}
	}
}

void outQueue(Queue* q)
{
	Node* temp;
	if(q->num==0)
	{
		printf("Empty OV\n");
	}
	else
	{
		q->num--;
		temp=q->head->next;
		q->head->next=temp->next;
		if(q->num==0)
			q->tail=NULL;
		delete(temp);
	}
}

void printQueue(Queue* q)
{
	Node *p;
	if(q->num==0)
	{
		printf("Empty\n");
	}
	else
	{
		p=q->head;
		while(p->next)
		{
			printf("%d ",p->next->data);
			p=p->next;
		}
		printf("\n");
	}
}


int main(void)
{
	int n;
	Queue *q;
	while(scanf("%d",&n)!=EOF)
	{
		switch(n)
		{
			case 1:
				q=initQueue();
				break;
			case 2:
				insertQueue(q);
				break;
			case 3:
				outQueue(q);
				break;
			case 4:
				printQueue(q);
				break;
			default:
				;
		}
	}
	return 0;
}
